/**
 * Clase Simbolo
 * @author José Manuel Sánchez Bernabéu
 *         Mercedes Martinez Cortinas
 */

public class Simbolo {
    private String nombre;
    private int tipoSimbolo;
    private int tipo;
    private boolean esUsada;
    private int indice=-1;

    // Clases de símbolos:
    public static final int
      VAR     = 1,
      METODO  = 2,
      CLASE   = 3;

    // Tipos de datos:
 //   public static final int
 //     DOUBLE  = 1,
 //     REAL    = 2;

    public Simbolo(String nombre, int tipoSimbolo, int tipo) {
        this.nombre = nombre;
        this.tipoSimbolo = tipoSimbolo;
        this.tipo = tipo;
        this.esUsada = false;
    }

    public Simbolo(String nombre, int tipoSimbolo, int tipo, int indice) {
        this.nombre = nombre;
        this.tipoSimbolo = tipoSimbolo;
        this.tipo = tipo;
        this.esUsada = false;
        this.indice = indice;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getTipoSimbolo() {
        return tipoSimbolo;
    }

    public void setTipoSimbolo(int tipoSimbolo) {
        this.tipoSimbolo = tipoSimbolo;
    }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    /**
     * @return the esUsada
     */
    public boolean isEsUsada() {
        return esUsada;
    }

    /**
     * @param esUsada the esUsada to set
     */
    public void setEsUsada(boolean esUsada) {
        this.esUsada = esUsada;
    }

    /**
     * @return the indice
     */
    public int getIndice() {
        return indice;
    }

    /**
     * @param indice the indice to set
     */
    public void setIndice(int indice) {
        this.indice = indice;
    }

}

/* Un diseño mejor pasa por crear una clase derivada de Simbolo para
   cada tipo de símbolo: SimboloVariable, SimboloFuncion, etc. */